48041ba87705176c0225f3889de64105cb587666,sulky-formatting/src/main/java/de/huxhorn/sulky/formatting/SafeString.java,SafeString,recursiveAppend,#Object#StringBuilder#IdentityHashMap#,137
Before Change
*/
private static void recursiveAppend(Object o, StringBuilder str, IdentityHashMap<Object, Object> dejaVu)
{
if(o == null)
{
str.append(NULL_VALUE);
return;
}
if(o instanceof String)
{
str.append(o);
return;
}
Class oClass = o.getClass();
if(oClass.isArray())
{
if(oClass == byte[].class)
{
str.append(Arrays.toString((byte[]) o));
return;
}
if(oClass == short[].class)
{
str.append(Arrays.toString((short[]) o));
return;
}
if(oClass == int[].class)
{
str.append(Arrays.toString((int[]) o));
return;
}
if(oClass == long[].class)
{
str.append(Arrays.toString((long[]) o));
return;
}
if(oClass == float[].class)
{
str.append(Arrays.toString((float[]) o));
return;
}
if(oClass == double[].class)
{
str.append(Arrays.toString((double[]) o));
return;
}
if(oClass == boolean[].class)
{
str.append(Arrays.toString((boolean[]) o));
return;
}
if(oClass == char[].class)
{
str.append(Arrays.toString((char[]) o));
return;
}
// special handling of container Object[]
if(dejaVu.containsKey(o))
{
str.append(RECURSION_PREFIX).append(identityToString(o)).append(RECURSION_SUFFIX);
return;
}
dejaVu.put(o, null);
Object[] oArray = (Object[]) o;
str.append(CONTAINER_PREFIX);
boolean first = true;
for(Object current : oArray)
{
if(first)
{
first = false;
}
else
{
str.append(CONTAINER_SEPARATOR);
}
recursiveAppend(current, str, new IdentityHashMap<>(dejaVu));
}
str.append(CONTAINER_SUFFIX);
return;
}
if(o instanceof Map)
{
// special handling of container Map
if(dejaVu.containsKey(o))
{
str.append(RECURSION_PREFIX).append(identityToString(o)).append(RECURSION_SUFFIX);
return;
}
dejaVu.put(o, null);
Map<?, ?> oMap = (Map<?, ?>) o;
str.append(MAP_PREFIX);
boolean first = true;
for(Map.Entry<?, ?> current : oMap.entrySet())
{
if(first)
{
first = false;
}
else
{
str.append(CONTAINER_SEPARATOR);
}
Object key = current.getKey();
Object value = current.getValue();
recursiveAppend(key, str, new IdentityHashMap<>(dejaVu));
str.append(MAP_KEY_VALUE_SEPARATOR);
recursiveAppend(value, str, new IdentityHashMap<>(dejaVu));
}
str.append(MAP_SUFFIX);
return;
}
if(o instanceof Collection)
{
// special handling of container Collection
if(dejaVu.containsKey(o))
{
str.append(RECURSION_PREFIX).append(identityToString(o)).append(RECURSION_SUFFIX);
return;
}
dejaVu.put(o, null);
Collection<?> oCol = (Collection<?>) o;
str.append(CONTAINER_PREFIX);
boolean first = true;
for(Object current : oCol)
{
if(first)
{
first = false;
}
else
{
str.append(CONTAINER_SEPARATOR);
}
recursiveAppend(current, str, new IdentityHashMap<>(dejaVu));
}
str.append(CONTAINER_SUFFIX);
return;
After Change
str.append(CONTAINER_SEPARATOR);
}
if(!handleSimpleContainerValue(current, str, quoteStringsInContainers))
{
recursiveAppend(current, str, new IdentityHashMap<>(dejaVu), quoteStringsInContainers);
}
}
str.append(CONTAINER_SUFFIX);